后悔大学没看到这个 Github 仓库!
前段时间有个读者给我反馈说,他 30 岁,未脱产的情况下,转行学 Java 8 个月,在上海找到了一家薪水 20k 左右的工作,学习阶段我的帖子给了他不少帮助。
最近又有不少小伙伴私信问我非科班转 Java 该怎么学,零基础入门 Java 该怎么学,有这方面疑问的同学,不妨参考一下这份 GitHub 上开源的 Java 教程。
Java 基础部分基本上已经完结,篇篇都是经过我良心打造的,通俗易懂、风趣幽默,说是初学者的福音也不为过。这是目录导航的思维导图,绿色打钩部分是已经更新的。
再随便截张图给大家感受下,可以说是图文并茂了。
GitHub 地址贴在这里了:
https://github.com/itwanger/toBeBetterJavaer
至于离线版 PDF 版的 get 方式,可以扫描下方二维码关注后在公众号后台回复「Java」获取最新版。里面还有不少优质的 Java 学习资料。
▲回复「Java」,获取PDF▲
还有 Guide 哥的面试突击、LeetCode 题解 Java 版、标星 115k 的 Java 开源教程等等。
回头看看,我学习 Java 也有 13 年时间了,不能说学得有多好,但这份《Java 程序员进阶之路》专栏,无疑对 Java 初学者会有很大的帮助。至于能让初学者少走多少弯路我不确定,但少走肯定是板上钉钉的事情。
自律+肯投入时间+按照我的学习建议,零基础的小白三个月入门 Java 不是什么大话!
如果还想要更多学习资料的话,我这里就不推荐了吧,只看二哥的专栏就够了。
好了,好了,推荐两本入门书吧:
《Java 核心技术卷 1》及《卷 2(也可以不卷)》 《Head First Java》
如果是科班零基础的,推荐看《Java 核心技术卷 1》好点。
如果是非科班转 Java,推荐看《Head First Java》可能会更合适,读起来更轻松惬意。
当然了,只看书容易视觉疲劳,不妨和视频结合起来看,B 站上有蛮多培训机构为了流量贡献了不少优质教学视频。
比如说尚硅谷宋红康老师的《Java 零基础教程》,这套视频891.4万播放。
视频地址:https://www.bilibili.com/video/BV1Kb411W75N
比如说动力节点老杜的《Java零基础教程视频》,这套视频 1296.4万播放,特喵的,刚截图的时候发现 90+人在看,不得了。
视频地址:https://www.bilibili.com/video/BV1Rx411876f
视频的好处就是能看到 up 主敲代码的过程,比较勾引人,不,吸引人。
书的话,一般都是经过作者深思熟虑的,结构化更完整,系统性比较强。读者更容易进入自己的节奏去吸收精华、去除糟粕。
总之就是,入门阶段,书和视频结合起来看,效果更佳;但无论如何,一定要记得多 coding,编程的学习离不开键盘的敲击声。
可以自学,但前提条件是一定要自律,不能三心二意,每天都要有计划地学习,并且要有效果。如果自制力差,扛不住诱惑,时间在无形当中都被 kill 掉了,那报班的效果可能更好点,至少有人鞭策着你。
自学的过程中,如果能遇到有实战经验的高人指点一下,就比如说单纯地帮你指出哪些地方是陷阱,哪些地方是重点,哪些地方是可以略过的,进步就是飞速的,哪怕你不是樱木花道这样的天才,没有教练、大舅哥、队友的帮助。
但是,如果你遇到的是,连 Java 中 Swing 都要求你去学的,并且给你带上 Intellij IDEA、Eclipse 都是 Swing 写的高帽子,那完蛋,你压根就没有时间和精力去学习更关键知识,比如说 Java 并发编程、Java 虚拟机,甚至偏应用的但至关重要的 Spring 开发框架你都没时间去学了,毕竟 Java 这块的知识浩如烟海,不挑重点,大包大揽的学习是行不通的。
需要掌握的内容我这里列举下:
数据类型(自动拆箱与自动装箱、缓存池) 操作符 流程控制 数组 字符串(字符串常量池、不可变、intern) 方法/构造方法(值传递和引用传递) 访问权限修饰符 static、final、this、super 关键字 继承 抽象类 接口 多态 方法重写/方法重载 内部类/匿名内部类 枚举 注解 反射 异常处理 集合框架(容器) 泛型 Java IO 工具类(Arrays、Conllections、Guava、Hutool)
有遗漏的大家也可以在评论去里补出来~
Java 的集合框架(有些大学的老师喜欢叫容器),一定要吃透,比如说:
ArrayList 和 linkedlist 的区别 HashMap 的加载因子为什么是 0.75 而不是 0.6、0.8 HashMap 的扩容机制 HashMap 的 hash 原理 HashMap 为什么是线程不安全的 等等
这些都是面试中习惯性被问到的知识点。如果有精力的话,最好研究一下这些类库的源码,掌握数组、链表、哈希表等等关键的数据结构,它们之间有什么差别最好能信誓旦旦地讲出来。
有可能的话,最好自己手撕一遍,看看自己能否实现一个动态数组、双向链表等。
实现的过程中,你能更好的理解 OOP 的编程思想,抽象类和接口之间的区别,final、static 关键字的使用场景等等。
在学习集合框架的时候,可以顺带把泛型给学了,要尽可能去了解为什么 Java 不能实现真正意义上的泛型,原因究竟是为什么?
Java 的基础语法这里就不提了。字符串、数组、注解、反射、异常处理机制,都要能熟练的掌握,因为只有基础扎实了,往后的学习才不会感觉很乏力。
反射看起来可能没那么耀眼,但它是很多框架的基础,比如说 SSM(Spring+SpringMVC+MyBatis)。
Java IO 部分,从设计的角度来看,典型的学院派,设计的很优雅,切割得很有模块化,但就是不太实用,实际的编程当中,很少有人会用原生的 API 进行文件的读写操作,甚至网络通信中如果涉及到了字节流读写,也都会安排 Netty 这样的框架来完成。
可以这么说,能看完这篇文章,Java IO 就算是掌握了。
当你按照我说的这些把 Java 入门的东西全部摸了一遍后,再去买本《Java 编程思想》过一遍,入门的工作就可以告一段落了。
入门阶段,要尽可能的减少干扰因素,能不学的就不学,把时间花在刀刃上。要学习的核心内容都放在《Java 程序员进阶之路》专栏的那张思维导图里了,可以把它放在收藏夹、放在桌面,作为大纲。
下面是我对零基础学 Java 的一些建议,可参考。
1)如果对书没有那么敏感,容易睡着,可以直接看视频。
视频相当于课堂听讲,就相当于网课,虽然也会睡着,但相对会好一点;看书就相当于课后自学。跟着视频学一段时间后,再看书的效果可能会更佳。
不懂的知识点一定要及时消化掉,不要存起来,以免堆积成山。不会的东西越多,厌学情绪就会越高涨。
必要的地方,一定要做笔记,哪怕是抄,也要多抄几遍。关键知识点要做到及时复习,免得学久了,就忘了。不做笔记的话,就很容易只是听懂了,但其实没有理解,实际编码的时候就写不出来。
2)尝试画思维导图,把知识图谱给整起来。
在我看来思维导图至少有两个好处:
理清思路,做笔记可能比较费时间,思维导图就快捷多了; 日后复习,看别人的思维导图总是感觉和自己实际情况不符,亲自动手就不一样了。
入门部分也就是 Java 最基础的部分,这部分学扎实了,后面才会得心应手。
万丈高楼平地起,勿在浮沙筑高台。
视频版我在 B 站上已经发表,铁粉们可以去给二哥来一波三连了,该交赞的交赞,该交币的交,该收藏的收藏,该分享到朋友圈的分享,总之就是,火钳刘明。
这是封面图(这次我把滤镜关了,果然脸大了不少😆):
这是 B 站地址,也可以戳「阅读原文」。
https://www.bilibili.com/video/BV1ZL411j7oR/
没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。
推荐阅读: